﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Sistema.Dominio;
using Sistema.NFe.Xml.Versao200.Mapeamento;
using Sistema.NFe.Xml.Interfaces;

namespace Sistema.NFe.Xml.Versao200
{
    class XmlProcNFe200 : Sistema.NFe.Xml.Interfaces.IXmlProcNFe
    {
        public String GeraXml(NFeInfo dados)
        {
            if (dados.StatusNota != enumStatusNota.Liberada) { return String.Empty; }
            TNfeProc dadosProc = new TNfeProc();
            TNFe dadosNota = new Util.Serializacao().Deserialize<TNFe>((from reg in dados.DadosEnvio
                                                                        where reg.Status == "100"
                                                                        select reg.XmlAssinado).FirstOrDefault());
            TProtNFe dadosLiberacao = new Util.Serializacao().Deserialize<TRetConsReciNFe>((from reg in dados.DadosOcorrencias
                                                                                     where reg.TipoOcorrencia == TipoOcorrencia.Liberacao
                                                                                     select reg.XmlOcorrencia).FirstOrDefault()).protNFe.First();
           
            dadosProc.NFe = dadosNota;
            dadosProc.protNFe = dadosLiberacao;
            dadosProc.versao = "2.00";

            System.Xml.Serialization.XmlSerializerNamespaces namespaces = new System.Xml.Serialization.XmlSerializerNamespaces();
            namespaces.Add("", "http://www.portalfiscal.inf.br/nfe");
            String XmlProc = new Util.Serializacao().SerializaXml<TNfeProc>(dadosProc,namespaces);
            return XmlProc.Replace("utf-16","utf-8");
        }
    }
}
